#include <sys_head.h>

int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
pthread_mutex_t m1, m2;

void *abc(void *p)
{
    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
    {
        if (arr[i] % 2 == 0)
        {
            pthread_mutex_lock(&m2); // 等待互斥锁，如果等到就上锁，其他线程就无法进入
            printf("子线程%d\n", arr[i]);
            pthread_mutex_unlock(&m1); // 释放互斥锁
        }
    }
}

int main(int argc, char const *argv[])
{
    // 初始化互斥锁
    pthread_mutex_init(&m1, NULL);
    pthread_mutex_init(&m2, NULL);
    pthread_mutex_lock(&m2);//锁住第二把锁
    pthread_t pt;
    pthread_create(&pt, NULL, abc, NULL);
    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
    {
        if (arr[i] % 2 != 0)
        {
            pthread_mutex_lock(&m1); // 等待互斥锁，如果等到就上锁，其他线程就无法进入
            printf("主线程%d\n", arr[i]);
            pthread_mutex_unlock(&m2); // 释放互斥锁
        }
    }
    void *p;
    pthread_join(pt, &p);
    return 0;
}
